From: Jasper St. Pierre Date: Fri, 15 Nov 2013 16:08:29 +0000 (-0500) Subject: entry: Make sure we chain up in enter/leave handlers X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~3047 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=c85145d73c87d7db264d7a9176f4b0d6531060ad;p=gnome-shell.git entry: Make sure we chain up in enter/leave handlers To ensure that the focus tracking executes correctly. https://bugzilla.gnome.org/show_bug.cgi?id=706749 --- diff --git a/src/st/st-entry.c b/src/st/st-entry.c index 0ddd1ff26..3cc61aabf 100644 --- a/src/st/st-entry.c +++ b/src/st/st-entry.c @@ -700,13 +700,23 @@ st_entry_set_cursor (StEntry *entry, } static gboolean -st_entry_crossing_event (ClutterActor *actor, - ClutterCrossingEvent *event) +st_entry_enter_event (ClutterActor *actor, + ClutterCrossingEvent *event) { if (event->source == ST_ENTRY (actor)->priv->entry && event->related != NULL) - st_entry_set_cursor (ST_ENTRY (actor), (event->type == CLUTTER_ENTER)); + st_entry_set_cursor (ST_ENTRY (actor), TRUE); - return FALSE; + return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->enter_event (actor, event); +} + +static gboolean +st_entry_leave_event (ClutterActor *actor, + ClutterCrossingEvent *event) +{ + if (event->source == ST_ENTRY (actor)->priv->entry && event->related != NULL) + st_entry_set_cursor (ST_ENTRY (actor), FALSE); + + return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->leave_event (actor, event); } static void @@ -741,8 +751,8 @@ st_entry_class_init (StEntryClass *klass) actor_class->key_press_event = st_entry_key_press_event; actor_class->key_focus_in = st_entry_key_focus_in; - actor_class->enter_event = st_entry_crossing_event; - actor_class->leave_event = st_entry_crossing_event; + actor_class->enter_event = st_entry_enter_event; + actor_class->leave_event = st_entry_leave_event; widget_class->style_changed = st_entry_style_changed; widget_class->navigate_focus = st_entry_navigate_focus;